In many programming environments, it is typical that one or more teams of developers work on various portions of a program. For example, several developers may be responsible for developing a user interface in the C programming language, while others may be responsible for the other aspects of a program. As the individual developers revise their respective files, it is highly important to carefully track each of the files and versions thereof, e.g., if no control is kept, another developer will possibly overwrite, revise or interface with an old version of a file rather than the latest new version. As is apparent, without such control, a project can quickly become completely confused.
To help manage the control of file versions, computer-based version control systems such as Microsoft.RTM. Corporation's Visual SourceSafe have been developed. In general, version control systems manage groups of files, particularly text files. For example, among other features, the Visual Sourcesafe product tracks versions of files, allowing the developer to see which files are checked out, view a history of changes, visually compare differences, add files, check out the latest version of a file or revert and use an earlier version, even one which had been deleted. Visual SourceSafe lets developers check the file back in when changes, if any, are ready. In this manner, each member in a development team is aware of the status of the various component parts of a program, thereby coordinating a project, preventing confusion and allowing recovery if something goes wrong.
At the same time, application programs such as Microsoft.RTM. Corporation's Access database program output files consisting of many developer-created objects, including tables, queries, forms, reports, macros and modules. For a given database application, all of these objects are stored in a single binary file, (e.g., filename.mdb). In part, this is because some of the objects have complex interdependencies on one another, i.e., a change to one object impacts another.
As a result, although the various objects in a database application are often worked on by one or more teams of developers, the database application is not able to take advantage of the primary functionality of a version control system. More particularly, because the database objects are all stored in a combined (binary) file, the individual objects of a database cannot be individually tracked, checked in or checked out. As a result, the logistical problems that version control systems are designed to alleviate are present in database and other object-based applications, but such applications cannot leverage the features provided thereby.